<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <!-- 构造函数和实例对象之间的关系 -->
    <script>
        function Person(name,age) {
            this.name = name;
            this.age = age;
            this.sayHi = function () {
                console.log('你好');
            }
        }
        var yq = new Person('于谦',39);
        // 答：1.实例对象的原型的构造函数指向自已的构造函数
        console.log(yq.__proto__.constructor);
        // 2.实例对象的原型的构造函数 和 构造函数的原型的构造函数 一样
        console.log(yq.__proto__.constructor == Person.prototype.constructor)
        // 3.实例对象的原型 和 构造函数的原型 一样
        console.log(yq.__proto__ == Person.prototype);
        // 如何判断某一个对象是那种类型？
        function Animal(category, age) {
            this.category = category;
            this.age = age;
            this.eat = function () {
                console.log('我想吃羊肉');
            }
        }
        var tiger = new Animal('老虎',20);
        var yq = new Person('于谦',40);
        console.log(tiger.__proto__.constructor == Person);
        console.log(yq.__proto__.constructor == Person);
        console.log(tiger instanceof Animal);
        console.log(yq instanceof Animal);
        // 实例对象实通过构造函数创建的 --创建的过程为实例化
        // 实例对象的原型的构造函数指向自已的构造函数
        // 如何判断对象是不是那个数据类型的
        // 1.对象.__proto__.constructor == 构造函数
        // 2.对象 instanceof 构造函数
        // instanceof instanceof instanceof
        // instanceof instanceof instanceof
        // instanceof instanceof instanceof
        // instanceof instanceof instanceof instanceof
        // instanceof instanceof instanceof
        // 用于判断这个实例对象是不是这个对象创建的
    </script>
</body>
</html>